package com.wiscamp.ninechapters.panels.domain.repositories;

import com.wiscamp.ninechapters.panels.domain.entities.Organization;
import cube.ddd.common.query.PagedObjects;
import cube.ddd.common.query.PagedQuery;

import java.util.Collection;

public interface OrganizationRepository {

    Organization getOrganization(long organizationId);

    Organization getOrganizationByCode(String organizationCode);

    Organization getOrganizationByName(String organizationName);

    Collection<Organization> getAvailableOrganizations();

    Collection<Organization> getOrganizationsByIds(Collection<Long> organizationIds);

    PagedObjects<Organization> getOrganizationsByQuery(PagedQuery query);

    Organization saveOrganization(Organization organization);
}
